import {reqAddOrUpdateShopCart, reqGoodsInfo} from '@/api';
//封装游客身份模块uuid，生成一个随机字符串
import {getUUID} from '@/utils/uuid_token';
const state = {
    goodInfo:{},
    //游客临时身份
    uuid_token:getUUID()

};
const mutations = {
    GETGOODINFO(state,goodInfo){
        state.goodInfo = goodInfo
    }
};
const actions = {
    //获取产品信息的action
    async getGoodInfo({commit},skuId){
        let result = await reqGoodsInfo(skuId);
        if(result.code = 200){
            //提交mutation
            commit('GETGOODINFO',result.data)
        }
    },
    //将产品添加到购物车中
    //函数加上async，就是一个promise对象
    async addOrUpdateShopCart({commit},{skuId,skuNum}){
        //加入购物车返回的解构
        //加入购物车以后(发请求)，前台将参数带给服务器
        //服务器写入数据成功，并没有返回其他的数据，只是返回了code=200，代表成功
        //因为服务器没有返回其余的数据，因此不需要三连环存储数据
        let result = await reqAddOrUpdateShopCart(skuId,skuNum);
        console.log(result);
        if(result.code == 200){
            //加入购物车成功
            return '成功'
        }else{
            //加入购物车失败
            return Promise.reject(new Error('file'))
        }
    }
};
//简化数据
const getters = {
    categoryView(state){
        //state.goodInfo初始状态为空对象，空对象的categoryView属性值为undefined
        //解决报错：加上||{}
        return state.goodInfo.categoryView||{};
    },
    skuInfo(state){
        return state.goodInfo.skuInfo ||{}
    },
    //产品售卖属性的简化
    spuSaleAttrList(state){
        return state.goodInfo.spuSaleAttrList || [];
    }
};
export default{
    state,
    actions,
    mutations,
    getters
}